States
The States card is designed for providing current device states. Such data is not reserved on Allxon Cloud; only the latest data is shown on the Portal. You need to send v2/notifyPluginState
to initialize the States card, and then continually send v2/notifyPluginState
to update the information on the States card.
Tutorials
Here is an example of creating the States card:
First, send the following v2/notifyPluginState
JSON.
{
"jsonrpc": "2.0",
"method": "v2/notifyPluginUpdate",
"params": {
"sdk": "${OCTO_SDK_VERSION}",
"appGUID": "${PLUGIN_APP_GUID}",
"appName": "${PLUGIN_NAME}",
"epoch": "",
"displayName": "Device Info",
"type": "ib",
"version": "${PLUGIN_VERSION}",
"modules": [
{
"moduleName": "device-info-plugin",
"displayName": "Device Info",
"properties": [],
"states": [
{
"name": "battery-percent",
"displayCategory": "Power",
"displayName": "Battery",
"description": "remaining battery percentage",
"displayType": "string"
}
]
}
]
}
}
Once done, Allxon Portal shows the States card below. There is no value for Battery because it's still in the initialization state.
Next, send v2/notifyPluginState
to assign and update the Battery value:
{
"jsonrpc": "2.0",
"method": "v2/notifyPluginState",
"params": {
"appGUID": "${PLUGIN_APP_GUID}",
"moduleName": "${PLUGIN_NAME}",
"epoch": "",
"states": [
{
"name": "battery-percent",
"value": "50"
}
]
}
}
Then you can see the Battery value has been updated, and the time of update is displayed below the value.
The update frequency of the States value is about once a minute.
Display Type
The card supports three display types: string, link, and table. For how to set up these display types, see the following sections.
String
The following example shows the code in v2/notifyPluginUpdate.json
for displaying a state in string format.
{
...
"states": [
{
"name": "stringState",
"displayType": "string",
...
},
...
]
}
When v2/notifyPluginState.json
is used to update the state, the "name"
must be identical to that in v2/notifyPluginUpdate.json
, and the data type of "value"
must be String.
{
"jsonrpc": "2.0",
"method": "v2/notifyPluginState",
"params": {
"states": [
{
"name": "stringState",
"value": "my state string"
},
...
]
}
}
Then the States card is updated, as shown below.
Link
The following example shows the code in v2/notifyPluginUpdate.json
for displaying a state as a hyperlink.
{
...
"states": [
{
"name": "linkState",
"displayType": "link",
...
},
...
]
}
When v2/notifyPluginState.json
is used to update the state, the "name"
must be identical to that in "v2/notifyPluginUpdate.json"
, and the data type of "value"
must be Object along with "url"
and "alias"
.
{
"jsonrpc": "2.0",
"method": "v2/notifyPluginState",
"params": {
...
"states": [
{
"name": "linkState",
"value": {
"url": "https://www.google.com",
"alias": "Google Site"
}
},
...
]
}
}
Then the States card is updated, as shown below.
Table
The following example shows the code in v2/notifyPluginUpdate.json
for displaying a state in a table.
{
...
"states": [
{
"name": "tableState",
"displayType": "table",
...
},
...
]
}
When "v2/notifyPluginState.json"
is used to update the state, the "name"
must be identical to that in "v2/notifyPluginUpdate.json"
. To define the content of the table, the data type of "value"
must be Array and follow the format in the example below.
{
"jsonrpc": "2.0",
"method": "v2/notifyPluginState",
"params": {
...
"states": [
{
"name": "tableState",
"value": [
{
"header1": "row1 column1",
"header2": "row1 column2"
},
{
"header1": "row2 column2",
"header2": "row2 column2"
}
]
}
]
}
}
Then the States card displays a table icon.
Clicking the table icon brings up the details.